;(function(){
  'use strict';
  angular.module('services.omdisplay.busAssessment',[])
    .factory('BusAssessmentService',busAssessmentService);
  /**
   * 业务侧考核service
   */
  function busAssessmentService(){
    //日期格式数组 时 日 周 月 季 年
    var FORMATARRAY = [
      undefined,'yyyy-MM-dd',undefined,'yyyy-MM-01','yyyy-01-01','yyyy-01-01'
    ];
    //季度显示名称数组 1 2 3 4 
    var QUARTERARRAY = [
      undefined,'第一季度','第二季度','第三季度','第四季度'
    ];
    
    return {
      FORMATARRAY:FORMATARRAY,
      QUARTERARRAY:QUARTERARRAY,
      initDate:initDate,
      getDuration:getDuration
    };
    /**
     * 初始化日期
     * @param   timeType 账期code
     */
    function initDate(timeType){
      //获取当前client系统时间
      var now = new Date();
      //申明日期对象
      var date = {};
      //年
      var year = now.getFullYear();
      //月
      var month = now.getMonth();
      //日
      var day = now.getDate()-1;
      //根据账期类型对应初始化不同的日期
      switch(timeType){
        case '3':
          date.startTime = new Date(year,month);
          date.endTime = new Date(year,month);
          break;
        case '5':
          date.startTime = year;
          date.endTime = year;
          break;
        default:
          date.startTime = new Date(year,month,day);
          date.endTime = new Date(year,month,day);
      }
      return date;
    }
    /**
     * 获得账期间隔区间
     * @param   param 查询参数
     */
    function getDuration(param){
      //账期区间
      var duration;
      //开始时间与结束时间是否相同
      var timeIsNotSame;
      //开始季度 结束季度
      var startQuarter,
        endQuarter;
      //如果选择账期为季 则按季度方式获取所选时间是否相同 反之只比对开始时间与结束时间是否相同
      if(param.timeType === '4'){
        timeIsNotSame = (param.startTime !== param.endTime)||(param.startQuarter !== param.endQuarter);
        startQuarter = QUARTERARRAY[param.startQuarter];
        endQuarter = QUARTERARRAY[param.endQuarter];
      }else{
        timeIsNotSame = (param.startTime !== param.endTime);
      }
      //根据账期代码生成对应的duration 这里 startTime 与 endTime 都会是 类似2014-01-01格式的字符串 不论账期什么类别
      switch(param.timeType){
        //年
        case '5' :
          duration = timeIsNotSame?
            (param.startTime.substr(0,4)+'_'+param.endTime.substr(0,4))
            :(param.startTime.substr(0,4)); 
          break;
        //季
        case '4' :
          duration = timeIsNotSame?
            (param.startTime.substr(0,4)+startQuarter+'_'+param.endTime.substr(0,4)+endQuarter)
            :(param.startTime.substr(0,4)+startQuarter);
          break;
        //月
        case '3' :
          duration = timeIsNotSame?
            (param.startTime.substr(0,7).replace(/-/g,'')+'_'+param.endTime.substr(0,7).replace(/-/g,''))
            :(param.startTime.substr(0,7).replace(/-/g,''));
          break;
        //日
        case '1' :
          duration = timeIsNotSame?
            (param.startTime.replace(/-/g,'')+'_'+param.endTime.replace(/-/g,''))
            :(param.startTime.replace(/-/g,''));
          break;
      }
      return duration;
    }

  }

})();
